package xplod.radio;

/**
 * Interface para el Radio.
 * 
 * @author Varios
 */
public interface iRadio
{
    /**
     * Enciende o apaga el Radio.
     * @return True si el radio se encendió, o false si el
     * radio se apagó.
     */
    public abstract boolean Power();
    
    /**
     * Cambia la banda de AM a FM o viceversa.
     * @return True si la banda es AM y false si la banda
     * es FM.
     */
    public abstract boolean ChangeSignal();
    
    /**
     * Adelanta la frecuencia a la siguiente posible.
     * @return La frecuencia a la que se pasa.
     */
    public abstract float NextFreq();
    
    /**
     * Graba la frecuencia actual en el botón dado. Existen únicamente
     * 12 posiciones de memoria (botones) por cada Banda, y se encuentran
     * en el rango [1,12].
     * @param Boton Posición a la que se desea guardar [1,12]
     * @return True si la operación fue exitosa, false en caso contrario.
     */
    public abstract boolean SaveFreq( int Boton );
    
    /**
     * Cambia la estación a la grabada en el botón dado. Devuelve la estación
     * actual que se escucha. Existen únicamente 12 posiciones de memoria por
     * cada Banda, y se encuentran en el rango [1,12].
     * @param Boton Posición a la que se desea cambiar [1,12]
     * @return La frecuencia (nueva) a la que está sintonizada la radio.
     */
    public abstract float ChangeTune( int Boton );
    
    /**
     * @return True si la radio está encendida, false en caso contrario.
     */
    public abstract boolean IsOn();
    
    /**
     * @return True si la banda es AM, y false si es FM.
     */
    public abstract boolean IsAm();
    
    /**
     * @return La frecuencia actual a la que está sintonizada la radio.
     */
    public abstract float GetFreq();
}
